package com.ionehe.group.common.uaa.ex.domain.service;

import com.ionehe.group.common.io.Response;
import com.ionehe.group.common.uaa.ex.dto.UserChangePasswordDTO;
import com.ionehe.group.common.uaa.ex.dto.UserInfoAddDTO;
import com.ionehe.group.common.uaa.ex.dto.UserInfoUpdateDTO;
import com.ionehe.group.common.uaa.ex.dto.UserLoginDTO;

/**
 * @USER:秀
 * @DATE: 2020/11/30
 * @PROJECT_NAME: general-permissions
 * @Description 用户写接口
 **/
public interface UserWriteService {
    /**
     * 登录功能
     *
     * @param userLoginDTO 管理员登陆dto
     * @return 生成的JWT的token
     */
    Response<String> login(UserLoginDTO userLoginDTO);

    /**
     * 新增用户
     *
     * @param userInfoAddDTO
     * @return
     */
    Response<Boolean> add(UserInfoAddDTO userInfoAddDTO);

    /**
     * 编辑用户
     *
     * @param userInfoUpdateDTO
     * @return
     */
    Response<Boolean> update(UserInfoUpdateDTO userInfoUpdateDTO);

    /**
     * 删除用户
     *
     * @param id
     * @return
     */
    Response<Boolean> delete(Long id);

    /**
     * 登出
     *
     * @param token token
     * @param ip    ip
     * @return 成功或失败
     */
    Response<Boolean> logout(String token, String ip);

    /**
     * 更新密码
     *
     * @param userChangePasswordDTO 密码
     * @return 成功或失败
     */
    Response<Boolean> changePassword(UserChangePasswordDTO userChangePasswordDTO);

    /**
     * 验证密码是否正确
     *
     * @param userChangePasswordDTO 密码
     * @return 成功或失败
     */
    Response<Boolean> checkPassword(UserChangePasswordDTO userChangePasswordDTO);
}
